Machine and equipment assets are engineered to perform particular tasks as part of a process. For example, assets can include, among other things and without limitation, industrial manufacturing equipment on a production line, drilling equipment for use in mining operations, wind turbines that generate electricity on a wind farm, transportation vehicles, gas and oil refining equipment, and the like. As another example, assets may include devices that aid in diagnosing patients such as imaging devices (e.g., X-ray or MRI systems), monitoring equipment, and the like. The design and implementation of these assets often takes into account both the physics of the task at hand, as well as the environment in which such assets are configured to operate.
Low-level software and hardware-based controllers have long been used to drive machine and equipment assets. However, the rise of inexpensive cloud computing, increasing sensor capabilities, and decreasing sensor costs, as well as the proliferation of mobile technologies, have created opportunities for creating novel industrial and healthcare based assets with improved sensing technology and which are capable of transmitting data that can then be distributed throughout a network. As a consequence, there are new opportunities to enhance the business value of some assets through the use of novel industrial-focused hardware and software. In particular, analytic applications have grown and become useful for analyzing raw or filtered data from an asset and analyzing the data to provide some form of understanding of the data to a user.
When a developer designs an analytic application, the developer must spend a significant amount of time ensuring that the analytic application is compatible with an underlying host platform (also referred to as an execution engine) where the application will be executed. One such type of host platform is a cloud services platform. Examples of a cloud services platform include, but are not limited to, AMAZON WEB SERVICES® (AWS®), GOOGLE CLOUD®, MICROSOFT AZURE®, IBM CLOUD®, and the like. However, each cloud services platform interacts and communicates with applications differently. In addition, each cloud services platform may have different services, different functionality, different content delivery, different data storage, different communications, different security, and/or the like.
Therefore, it is very difficult for a developer to design a single version of a software application that is compatible with more than one type of cloud services platform. Instead, the developer typically develops different versions of the application for different cloud services platform. Learning how to design an application that will be compatible with a previously unknown cloud services platform can take a developer a significant amount of time (e.g., weeks and even months) because the developer must learn the intricacies of the functionality required for the cloud services platform. Furthermore, multiple runtime environments may be incorporated within a cloud services platform and each runtime environment may include unique classes and functions that can be used to process input, manage hardware devices, and interact with system software.